package logica.veiculo;

import java.util.Iterator;
import java.util.List;

import logica.pessoa.Filial;
import logica.util.Data;

public class Automovel extends Veiculo {
	
	/**
	 * Constroi um objeto do tipo Automovel.
	 * @param RENAVAM String - O numero RENAVAM do automovel
	 * @param modelo String - O modelo do automovel
	 * @param marca String - A marca do automovel
	 * @param placa2 int - O ano de fabricacao do automovel
	 * @param potencia int - O valor da potencia do automovel
	 * @param tipoDePotencia Potencia - O tipo de potencia do automovel
	 * @param cor Cor - A cor do automovel
	 * @param tipoDeCombustivel Combustivel - O tipo de combustivel utilizado pelo automovel
	 * @param dataDeAquisicao Data - A data de aquisicao do automovel pela locadora
	 * @param filial Filial - A filial onde esta o automovel
	 * @param acessorios List(Acessorio) - Os acessorios que o automovel possui
	 * @param estado Estado - O estado do automovel para a locadora
	 * @param placa String - A placa do automovel
	 * @param  int - O nivel do tanque do veiculo
	 * @throws Exception Se o RENAVAM, o modelo, a marca ou a placa forem nulos ou vazios ou
	 * se o RENAVAM contiver algum caractere nao-numerico ou se a lista de acessorios for vazia ou
	 * se o valor da potencia ou do ano forem menores ou iguais a 0.
	 */
	
		
	public Automovel(String Renavam, String modelo, String marca, int ano, 
			int potencia, Potencia tipoDePotencia, Cor cor,
			Combustivel tipoDeCombustivel, Data dataDeAquisicao, Filial filial,
			List<Acessorio> acessorios, Estado estado, String placa, int nivelDoTanque) throws Exception{
		
		super(Renavam, modelo, marca, ano, potencia, tipoDePotencia, cor, tipoDeCombustivel,
			dataDeAquisicao, filial, acessorios, estado, placa,nivelDoTanque);
	}

	@Override
	/**
	 * @author Pedro Rawan Meireles Limeira
	 */
	public String toString() {
		
		String acessoriosString="";
		Iterator<Acessorio> iterador = this.getAcessorios().iterator();
		//Cria uma string com todos os acessorios
		while(iterador.hasNext()){
			acessoriosString+=iterador.next()+" ";
		}
		
		return "\nAutomovel"+" "+this.getRenavam()+"\n"+
		"________________________"+"\n"+
		"\nModelo: "+this.getModelo()+"\t"+"Marca: "+this.getMarca()+"\t"+"Placa: "+this.getPlaca()+"\t"+"Ano: "+this.getAno()+"\n"+
		"Potencia: "+this.getPotencia()+" "+this.getTipoDePotencia()+"\n"+
		"Cor: "+this.getCor()+"\t"+"Acessorios: "+acessoriosString+"\t"+"\n"+
		"Data: "+this.getDataDeAquisicao()+"\t"+"Estado: "+this.getEstado()+"\t"+"Nivel do Tanque: "+this.getNivelDoTanque()+"\n"+
		"Filial: "+this.getFilial()+"\n"+
		"_________________________"
		;
	}
}